package com.hsu.apibackend.service;

import com.hsu.apibackend.model.entity.ProductOrder;
import com.hsu.apibackend.model.vo.ProductOrderVO;
import com.hsu.apibackend.model.vo.UserVO;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @Author Hsu琛君珩
 * @Date 2024-09-09 19:42
 * @Description 订单服务接口，定义了订单处理相关操作
 * @Version: v1.0.0
 */
public interface OrderService {

    /**
     * 处理订单通知
     *
     * @param notifyData 通知数据
     * @param request    Http 请求对象
     * @return 通知处理结果
     */
    String doOrderNotify(String notifyData, HttpServletRequest request);

    /**
     * 根据付款类型获取对应的产品订单服务
     *
     * @param payType 付款类型（如微信、支付宝等）
     * @return 付款类型对应的产品订单服务
     */
    ProductOrderService getProductOrderServiceByPayType(String payType);

    /**
     * 根据付款类型创建订单
     *
     * @param productId 产品 ID
     * @param payType   付款类型
     * @param loginUser 登录的用户信息
     * @return 订单详情视图对象
     */
    ProductOrderVO createOrderByPayType(Long productId, String payType, UserVO loginUser);

    /**
     * 根据时间范围获取未支付的订单
     *
     * @param minutes 未支付的时长（分钟）
     * @param remove  是否需要删除未支付的订单
     * @param payType 付款类型
     * @return 未支付的订单列表
     */
    List<ProductOrder> getNoPayOrderByDuration(int minutes, Boolean remove, String payType);
}
